/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package runebound.modelo.monstruos.comportamientos;

import runebound.manejadores.RBControladorJuego;
import runebound.manejadores.eventos.combate.RBEventoTestResultado;
import runebound.modelo.Habilidad;
import runebound.modelo.Miniatura;
import runebound.modelo.heores.experiencia.Atributo;


/**
 *
 * @author malopez
 */
public class AntesCombateTestSetAtributo extends AntesDeCombateTest{

    public AntesCombateTestSetAtributo(Habilidad habilidad, 
            int valorTest, 
            boolean objetivoExitoMonstruo, 
            boolean objetivoFalloMonstruo, 
            boolean hacerExito,
            boolean hacerFallo,
            Atributo atributoExito,
            Atributo atributoFallo,
            int valorAccionExito, 
            int valorAccionFallo) {
        super(habilidad,
                valorTest, 
                objetivoExitoMonstruo, 
                objetivoFalloMonstruo, 
                hacerExito, 
                hacerFallo, 
                atributoExito, 
                atributoFallo, 
                valorAccionExito, 
                valorAccionFallo);
    }


    
    
    @Override
    protected void antesDeCombateTestExito(Miniatura objetivo) {
       this.setAtributo(objetivo, this.getAtributoExito(), this.getValorAccionExito());
        RBControladorJuego.getInstance().recibirEvento(
                new RBEventoTestResultado(objetivo,
                        this.getAtributoExito(),
                        this.getValorAccionExito()));
    }

    @Override
    protected void antesDeCombateTestFallo(Miniatura objetivo) {
       this.setAtributo(objetivo, this.getAtributoFallo(), this.getValorAccionFallo());
       RBControladorJuego.getInstance().recibirEvento(
               new RBEventoTestResultado(objetivo,
                       this.getAtributoFallo(),
                       this.getValorAccionFallo()));
    }

    
    private void setAtributo(Miniatura objetivo, Atributo atributo, int valor){
        switch(atributo){
            case FISICO:
                objetivo.setValorFisico(valor);
                break;
            case MENTE:
                objetivo.setValorMente(valor);
                break;
            case MAGIA:
                objetivo.setValorMagia(valor);
                break;
            case VIDA:
                objetivo.hit(valor);
                break;
        }
    }
    
    
    
}
